import { GridsterItem } from 'angular-gridster2';

export interface ForminData {
  templateId: string;
  items: Control[];
}

/** 组件子类，控制组件的展示和数据 */
export interface ControlBase extends GridsterItem {
  /** 组件id */
  uuid: string;
  /** 组件类型 */
  type: string;
  /** 组件图标 */
  icon?: string;
}

export interface Control extends ControlBase {
  /** 组件绑定 */
  name?: string;
  /** 标题 */
  label?: string;
  /** 对齐方式 */
  textAlign?: TextAlignType;
  /** 文字大小 */
  fontSize?: FontSizeType; 
  /** 占位符 */
  placeholder?: string;
  /** 是否必填 */
  isRequired?: boolean;
}

/** 组件option类型 */ 
export interface ControlOption {
  key: string;
  value: any;
  checked: boolean;
}

/** 文本对齐方式枚举 */ 
export enum TextAlignType {
  Left = 'left',
  Center = 'center',
  Right = 'right',
}

/** 边框样式枚举 */ 
export enum BorderStyleType {
  Solid = 'solid',
  Dashed = 'dashed',
  None = 'none',
}

export enum DashboardType {
  Renderer = 'renderer',
  Builder = 'builder',
}


/** 文字尺寸枚举 */ 
export enum FontSizeType {
  Large = '20px',
  Big = '18px',
  Medium = '16px',
  Small = '14px',
  ExtraSmall = '12px',
}

/** 组件类型枚举 */ 
export enum ControlType {
  /** 标题 */ 
  Header = 'ForminFormHeaderComponent',
  /** 分割线 */ 
  Hr = 'ForminFormHrizontalRuleComponent',
  /** 单行文本 */ 
  Text = 'ForminFormTextComponent',
  /** 多行文本 */ 
  Textarea = 'ForminFormTextAreaComponent',
  /** 单选 */ 
  Radio = 'ForminFormRadioComponent',
  /** 多选 */ 
  Checkbox = 'ForminFormCheckboxComponent',
  /** 开关 */ 
  Switch = 'ForminFormSwitchComponent',
  /** 日历 */ 
  Datetime = 'ForminFormDatetimeComponent',
}


